<?php

namespace App\Services;

use Illuminate\Support\Facades\Crypt;

class EncryptionService
{
    /**
     * 加密敏感数据
     *
     * @param string $value
     * @return string
     */
    public function encrypt(string $value): string
    {
        return Crypt::encryptString($value);
    }

    /**
     * 解密敏感数据
     *
     * @param string $encryptedValue
     * @return string
     */
    public function decrypt(string $encryptedValue): string
    {
        try {
            return Crypt::decryptString($encryptedValue);
        } catch (\Exception $e) {
            \Illuminate\Support\Facades\Log::error('数据解密失败: ' . $e->getMessage());
            return '';
        }
    }

    /**
     * 检查字符串是否是加密数据
     *
     * @param string $value
     * @return bool
     */
    public function isEncrypted(string $value): bool
    {
        // Laravel加密的数据通常以base64编码，并且有特定的格式
        try {
            Crypt::decryptString($value);
            return true;
        } catch (\Exception $e) {
            return false;
        }
    }
}

